/* Zatok - язык программирования текстовых игр
 * (С) 2010 - 2012 Меркулов Матвей Юрьевич
 * Код лицензирован под лицензией GNU LGPL
 * Вы можете прочитать текст лицензии по адресу:
 * http://www.gnu.org/copyleft/lesser.html
 * или прочитать русский перевод по адресу:
 * http://ru.wikisource.org/wiki/GNU_Lesser_General_Public_License
 */

package base.context;

import base.function.CBooleanFunction;
import base.userfunction.CFunctionCall;
import base.userfunction.CUserFunctionID;
import base.value.CValue;
import base.value.CValue.CType;
import parser.CParser;

public class CContainsFunction extends CBooleanFunction {
	@Override
	public void Init() {
		AssertParam( 2 );
	}
	
	
	
	@Override
	public boolean ToBoolean() {
		CFunctionCall FunctionCall = Param[ 1 ].ToFunctionCall();
		CUserFunctionID ID = null;
		if( FunctionCall == null ) {
			CValue Value = Param[ 1 ].GetValue();
			if( Value.GetType() == CType.String ) ID = CParser.Functions.get( Value.ToString() );
		} else {
			ID = FunctionCall.FunctionID;
		}
		if( ID == null ) Error( "Ожидается строка или функция" );
		return Param[ 0 ].ToObject().BaseData.Functions.containsKey( ID );
	}
}
